Database systems are utilized in many aspects of data processing systems, including in networked computer systems such as the middleware, Internet and the World Wide Web (WWW) that have grown to a robust infrastructure for handling mission-critical business traffic. As the result, Internet utilization is still growing exponentially with the increasing number of commercial and support web sites (servers) and Internet users using client workstations (client). To support this growth, web sites (implemented on web servers and database servers) must be able to set up and maintain a few million connections every second. Further, quick response time and continuous availability are mandatory requirements as web sites compete to offer users the best online experience.
Conventional networked computer infrastructure for businesses (e.g., over the Internet and WWW), utilizes multi-tier client-server architecture. Client-server architecture provides multiple clients with access to the same data via servers. In its most basic form, a two-tier model is a client-server model in which a client communicates with a server across a network to request remote services. For example, a retail user can point a browser on a personal computer to web site of an online bookstore to request information about a book title. The request in turn is routed to a centralized web server through the network, and the web server in turn communicates with a database engine/server to return the requested information to the retail user. The centralized server can communicate with a number of clients simultaneously.
In the two-tier architecture, one server is responsible for offering both web and database contents. A two-tier architecture provides multiple clients with a uniform presentation layer that communicates with a centralized data storage layer. The presentation layer is generally the client and the data storage layer is the server. A disadvantage of the two-tier architecture is that it is not capable of adapting to changing environments and scaling with growing user and data volume and traffic. This is because each client carries the presentation logic and a part of business logic while the server carries the other part of business logic as well as the required resources such as the web and database servers.
The scalability and changing environment issues in a two-tier architecture have been addressed to a certain degree by extending the two tiers to three. A three-tier architecture isolates the data processing in a central location that can be easily changed without impacting the clients. In a three-tier architecture, the presentation logic resides in the first (client) tier, the business logic in the middle tier, and other resources such as database reside in the back-end third tier. The middle tier of a three-tier architecture (usually the application server) handles data processing and plays the role of the interface between the front-end tier (client) and the back-end tier (database).
The middle tier is the primary interface that directly interacts with the clients located in the first tier and hides all of the functional details of the back-end tier from the clients. In an example three-tier architecture, the middle tier comprises a web server that interacts with the client web browsers, and the back-end tier comprises a database engine that interacts only with the web server. However, a major disadvantage of such a system is that a relatively large number of clients in the first tier simultaneously requesting remote services can gradually create a bottleneck in the second and third tiers. This degrades system performance and eventually availability.
To alleviate this problem, some there-tier architectures have created a multi-tier architecture that expands the middle tier layer into multi-layer architecture, wherein a single web server is replaced with multiple web servers to increase performance of the middle tier while keeping the functionality transparent from the first layer clients. Though the performance shortcomings of the middle layer tier are somewhat alleviated, the back-end database tier continues to suffer substantially from lack of availability, lack of scalability and performance enhancements, thereby negatively impacting the availability and scalability of the entire multi-tier system.
There is, therefore, a need for an implementation-independent method that provides better scalability and performance for the back-end database tier. In one example, implementation-independent database load balancing techniques may be employed. The major requirement for employing such techniques is to provide multiple databases with a unified view of data among those databases independent of the specific implementation of the database. There is also a need for scalable computer system comprising networked client and server computers that maximizes server efficiency, such as in database management servers. There is also a need for a method and system that can scale server capacity dynamically to match aggregate client demand while ensuring continuous service availability network computing systems.